﻿using System;
using SharpSqlAnalyzer.pp.processor;
using SharpSqlAnalyzer.pp.stmtformatter.type;
using SharpSqlAnalyzer.pp.stmtformatter.type.comm;

namespace SharpSqlAnalyzer.pp.stmtformatter.builder.comm
{
	// Token: 0x02000223 RID: 547
	public class InsertStmtFormatterBuilder : AbstractStmtFormatterBuilder
	{
		// Token: 0x06001278 RID: 4728 RVA: 0x00319108 File Offset: 0x00317308
		protected internal override void initSpecialProcessorForFormatter(AbstractStmtFormatter formatterArg)
		{
			InsertStmtFormatter insertStmtFormatter = formatterArg as InsertStmtFormatter;
			insertStmtFormatter.addSpecialProcessor(ProcessorFactory.createCapitalisationProcessor(this.Option));
			insertStmtFormatter.addSpecialProcessor(ProcessorFactory.createCombineWhitespaceAndClearReturnProcessor(this.Option));
			insertStmtFormatter.addSpecialProcessor(ProcessorFactory.createCTEProcessor(this.Option, new bool?(this.Option.cteNewlineBeforeAs)));
			insertStmtFormatter.addSpecialProcessor(ProcessorFactory.createInsertKeyWordAlignProcessor(this.Option));
			insertStmtFormatter.addSpecialProcessor(ProcessorFactory.createAppendLineAfterInsertTableNameProcessor(this.Option));
			insertStmtFormatter.addSpecialProcessor(ProcessorFactory.createInsertValuesParenthsesAdjustProcessor(this.Option));
			insertStmtFormatter.addSpecialProcessor(ProcessorFactory.createInsertOutputClauseProcessor(this.Option));
			insertStmtFormatter.addItemListProcessor(ProcessorFactory.createColumnlistCommaProcessor(this.Option, this.Option.defaultCommaOption, this.Option.insertColumnlistStyle));
			insertStmtFormatter.addValueListProcessor(ProcessorFactory.createAppendNewLineBeforeReverseKeyWordProcessor(this.Option, true, "values"));
			insertStmtFormatter.addValueListProcessor(ProcessorFactory.createColumnlistCommaProcessor(this.Option, this.Option.defaultCommaOption, this.Option.insertValuelistStyle));
		}

		// Token: 0x06001279 RID: 4729 RVA: 0x00319206 File Offset: 0x00317406
		protected internal override AbstractStmtFormatter newInstanceFormatter()
		{
			return new InsertStmtFormatter();
		}
	}
}
